package cashlog

import "yundian/internel/pkg/dingo"

// CashLogModel Model 提现记录
type CashLogModel struct {
	ID         int    `gorm:"column:id" json:"id"`                   //
	TID        int    `gorm:"column:tid" json:"-"`                   //
	Appid      string `gorm:"column:appid" json:"appid"`             // 昀电公众号Appid
	UserID     int    `gorm:"column:user_id" json:"userId"`          // 用户ID
	TradeNo    string `gorm:"column:trade_no" json:"tradeNo"`        // 订单号
	OutTradeNo string `gorm:"column:out_trade_no" json:"outTradeNo"` // 订单号

	Money            int64  `gorm:"column:money" json:"money"`                         // 申请金额 单位-分
	MoneyStr         string `gorm:"column:money_str" json:"moneyStr"`                  // 申请金额 单位-元
	TransferMoney    int64  `gorm:"column:transfer_money" json:"transferMoney"`        // 转帐金额 单位-分
	TransferMoneyStr string `gorm:"column:transfer_money_str" json:"transferMoneyStr"` // 转帐金额 单位-元
	TransferType     uint8  `gorm:"column:transfer_type" json:"transferType"`          // 转帐类型 1:付款到零钱 2:付款到银行卡 3:付款到二维码
	ServiceCharge    uint8  `gorm:"column:service_charge" json:"serviceCharge"`        // 转帐手续费 百分比
	TaxRate    int  `gorm:"-" json:"taxRate"`        //
	OperateNote      string `gorm:"column:operate_note" json:"operateNote"`            // 操作说明 系统自动转账成功
	TransferName     string `gorm:"column:transfer_name" json:"transferName"`          // 转帐姓名
	Desc             string `gorm:"column:desc" json:"desc"`                           // 转帐备注

	ReceivingType    uint8  `gorm:"column:receiving_type" json:"receivingType"`       // 收款类型 1:微信帐号 2:银行卡 3:微信二维码
	ReceivingAccount string `gorm:"column:receiving_account" json:"receivingAccount"` // 收款帐户 微信openid、银行卡、3(微信二维码)

	State        uint8 `gorm:"column:state" json:"state"`                // 转帐状态 2:已处理 3:处理失败
	VerifyStatus uint8 `gorm:"column:verify_status" json:"verifyStatus"` // 验证帐态 2:审核通过 3:审核拒绝

	OperateAt dingo.Time `gorm:"column:operate_at" json:"operateAt"` // 操作时间
	UpdateAt  dingo.Time `gorm:"column:update_at" json:"updateAt"`   // 更新时间
	CreateAt  dingo.Time `gorm:"column:create_at" json:"createAt"`   // 新增时间

	PictureUrl string `gorm:"column:picture_url" json:"picture_url"` //图片路径
}

// 用户提现日志列表 - 后台提现列表
type UserWithdrawalLog struct {
	ID               int    `gorm:"column:id" json:"id"`
	Name             string `gorm:"column:name" json:"name"`
	Phone            string `gorm:"column:phone" json:"phone"`
	UserID           int    `gorm:"column:user_id" json:"userId"`
	Money            int    `gorm:"column:money" json:"money"`                         // 金额
	TradeNo          string `gorm:"column:trade_no" json:"tradeNo"`                    // 订单号
	Desc             string `gorm:"column:desc" json:"desc"`                           // 转帐描述
	MoneyStr         string `gorm:"column:money_str" json:"moneyStr"`                  // 金额str
	TransferMoneyStr string `gorm:"column:transfer_money_str" json:"transferMoneyStr"` // 转帐金额
	State            uint8  `gorm:"column:state" json:"state"`                         // 转帐状态
	VerifyStatus     uint8  `gorm:"column:verify_status" json:"verifyStatus"`          // 审核 状态
	ServiceCharge    uint8  `gorm:"column:service_charge" json:"serviceCharge"`        // 转帐手续费 百分比
	CashMoney        string `gorm:"-" json:"cashTotal"`                                // 已提现金额
	DrawMoney        string `gorm:"-" json:"drawMoney"`                                // 抽单金额
	DivindsMoney     string `gorm:"-" json:"divindsMoney"`                             // 分红金额
	Balance          string `gorm:"-" json:"balance"`                                  // 余额-可提现金额
	OperateNote      string `gorm:"operate_note" json:"operateNote"`                   // 说明

	WxIncomeQRCode string     `gorm:"column:wx_income_qrcode" json:"wx_income_qrcode"`
	ParentName     string     `gorm:"column:parent_name" json:"parent_name"`
	ParentUserName string     `gorm:"column:parent_user_name" json:"parent_user_name"`
	ParentId       int        `gorm:"column:parent_id" json:"parent_id"`
	UserName       string     `gorm:"column:user_name" json:"user_name"`
	CreateAt       dingo.Time `gorm:"column:create_at" json:"createAt"`

	TaxRate uint8 `gorm:"tax_rate" json:"taxRate"` // 税率
}

// model init
func New() *CashLogModel {
	return &CashLogModel{}
}

// TableName
func (m *CashLogModel) TableName() string {
	return "withdrawal_log"
}

func (m *CashLogModel) Mutate(attrs ...WithdrawalLogAttr) *CashLogModel {
	WithdrawalLogAttrs(attrs).Apply(m)
	return m
}

// 转帐订单
type TransferOrder struct {
	TradeNo      string `gorm:"column:trade_no" json:"tradeNo"`           // 订单编号
	OutTradeNo   string `gorm:"column:out_trade_no" json:"outTradeNo"`    // 订单编号
	UserID       int    `gorm:"column:user_id" json:"userId"`             // 用户ID
	BusinessType int    `gorm:"column:business_type" json:"businessType"` // 业务类型
	TransferType int    `gorm:"column:transfer_type" json:"transferType"` // 转帐类型 1:付款到零钱 2:付款到银行卡 3:付款到二维码

	Money int64  `gorm:"column:money" json:"money"` // 转帐金额 单位 分
	Note  string `gorm:"column:note" json:"note"`   // 转帐说明
	State int    `gorm:"column:state" json:"state"` // 状态 2:已处理 3:处理失败

	ReceivingInfo string `gorm:"column:receiving_info" json:"receivingInfo"` // 收款信息 json nick_name,appid,openid
	ReceivingType int    `gorm:"column:receiving_type" json:"receivingType"` // 收款类型 1:微信帐号 2:银行卡 3:微信二维码

	WxAppID   string `gorm:"column:wx_appid" json:"wxAppId"`     // 公众号Appid
	WxOpenID  string `gorm:"column:wx_openid" json:"wxOpenId"`   // 微信公众号openid
	PayeeID   string `gorm:"column:payee_id" json:"payeeId"`     // 收款人ID  openid
	PayeeType int    `gorm:"column:payee_type" json:"payeeType"` // 收款人类型 1:个人

	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"` // 更新时间
	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"` // 创建时间
}

// 服务订单提现记录
type CashOrderLog struct {
	CashOrderLogDb
	VerifyTime string `gorm:"column:verify_time" json:"verifyTime"`
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}

// 服务订单提现记录
type CashOrderLogDb struct {
	Id            int     `gorm:"column:id" json:"id"`          // ID
	UserId        int     `gorm:"column:user_id" json:"userId"` // 用户ID
	Money         int     `gorm:"column:money" json:"money"`
	TransferMoney int     `gorm:"column:transfer_money" json:"transferMoney"`
	ServiceCharge float32 `gorm:"column:service_charge" json:"serviceCharge"`
	Type          uint8   `gorm:"column:type" json:"type"`
	Status        uint8   `gorm:"column:status" json:"status"`
	OrderType     uint8   `gorm:"column:order_type" json:"orderType"`
	VerifyStatus  uint8   `gorm:"column:verify_status" json:"verifyStatus"`
	UnitName      string  `gorm:"column:unit_name" json:"unitName"`
	BankName      string  `gorm:"column:bank_name" json:"bankName"`
	BankAccounts  string  `gorm:"column:bank_accounts" json:"bankAccounts"`
	PayeeUrl      string  `gorm:"column:payee_url" json:"payeeUrl"`
	Message       string  `gorm:"column:message" json:"message"`
}

func (m *CashOrderLogDb) TableName() string {
	return "cash_order_log"
}

type TransferOrderPcl struct {
	TradeNo      string `gorm:"column:trade_no" json:"tradeNo"`           // 订单编号
	OutTradeNo   string `gorm:"column:out_trade_no" json:"outTradeNo"`    // 订单编号
	UserID       int    `gorm:"column:user_id" json:"userId"`             // 用户ID
	BusinessType int    `gorm:"column:business_type" json:"businessType"` // 业务类型
	TransferType int    `gorm:"column:transfer_type" json:"transferType"` // 转帐类型 1:付款到零钱 2:付款到银行卡 3:付款到二维码

	Money int64  `gorm:"column:money" json:"money"` // 转帐金额 单位 分
	Note  string `gorm:"column:note" json:"note"`   // 转帐说明
	State int    `gorm:"column:state" json:"state"` // 状态 2:已处理 3:处理失败

	ReceivingInfo string `gorm:"column:receiving_info" json:"receivingInfo"` // 收款信息 json nick_name,appid,openid
	ReceivingType int    `gorm:"column:receiving_type" json:"receivingType"` // 收款类型 1:微信帐号 2:银行卡 3:微信二维码

	WxAppID   string `gorm:"column:wx_appid" json:"wxAppId"`     // 公众号Appid
	WxOpenID  string `gorm:"column:wx_openid" json:"wxOpenId"`   // 微信公众号openid
	PayeeID   string `gorm:"column:payee_id" json:"payeeId"`     // 收款人ID  openid
	PayeeType int    `gorm:"column:payee_type" json:"payeeType"` // 收款人类型 1:个人

	UpdateAt dingo.Time `gorm:"column:update_at" json:"updateAt"` // 更新时间
	CreateAt dingo.Time `gorm:"column:create_at" json:"createAt"` // 创建时间
}
